package com.xinou.daily_report.service;

import com.xinou.common.base.config.ApiResponse;
import com.xinou.daily_report.PO.daily.*;
import com.xinou.daily_report.VO.daily.DailyInfoVO;
import com.xinou.daily_report.VO.DailyListExcelVO;
import com.xinou.daily_report.VO.DailySingleListVO;
import com.xinou.daily_report.VO.DailyUserListVO;
import com.xinou.daily_report.VO.daily.DailyListVO;
import com.xinou.daily_report.VO.daily.MiniDailyListVO;
import com.xinou.daily_report.entity.SysDaily;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;

/**
 * <p>
 * 服务类
 * </p>
 *
 * @author ${author}
 * @since 2021-06-11
 */
public interface SysDailyService extends IService<SysDaily> {

    /**
     * 添加
     *
     * @param po
     * @return
     */
    ApiResponse<Boolean> dailyAdd(DailyAddPO po);

    /**
     * 删除
     *
     * @param po
     * @return
     */
    ApiResponse<Boolean> dailyDelete(DailyDeletePO po);

    /**
     * 列表
     *
     * @param po
     * @return
     */
    ApiResponse<DailyListVO> dailyList(DailyListPO po);

    /**
     * mini 列表
     *
     * @param po
     * @return
     */
    ApiResponse<MiniDailyListVO> miniDailyList(DailyListPO po);

    /**
     * 日报下载
     *
     * @param po
     * @return
     */
    List<DailyListExcelVO> dailyDownList(DailyListPO po);

    /**
     * 详情
     *
     * @param po
     * @return
     */
    ApiResponse<DailyInfoVO> dailyInfo(DailyInfoPO po);

    /**
     * 日报默认值
     *
     * @return 日报默认值
     */
    ApiResponse<DailyInfoVO> dailyToday();

    /**
     * 日计划默认值
     *
     * @return 日计划默认值
     */
    ApiResponse<DailyInfoVO> dailyPlan(DailyListPO po);


    /**
     * 获取任务条款列表
     *
     * @param dailyId
     * @return
     */
    List<DailySingleListVO> dailySingleList(Long dailyId);

    /**
     * 获取任务条款列表
     *
     * @param po
     * @return
     */
    ApiResponse<DailySingleListVO> dailySingleList(DailySingleListPO po);

    /**
     * 更新
     *
     * @param po
     * @return
     */
    ApiResponse<String> dailyUpdate(DailyUpdatePO po);

    /**
     * 改变状态
     *
     * @param po
     * @return
     */
    ApiResponse<Void> dailyStatusUpdate(DailyStatusUpdatePO po);

    /**
     * 用户
     *
     * @param po
     * @return
     */
    ApiResponse<DailyUserListVO> dailyUserList(DailyUserListPO po);
}
